iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

Codewars Ruby Challenge in 30 Days系列 第 2

Codewars Ruby Challenge - Day 2/30

  • 分享至 

  • xImage
  •  

題目:

class Ball
  # 實作內容
end

答案需為:

ball1 = Ball.new
puts ball1.ball_type   # 印出 regular

ball2 = Ball.new("super")
puts ball2.ball_type   # 印出 super

我的答案

class Ball
  def initialize(*name)
    if name.any?
      @name = name
    else
      @name = "regular"
    end
  end

  def ball_type
    @name
  end
end

思路:

  1. 跟 Day1有點像,差異在於有時候 new 會沒有初始值,但還是要有 initialize 的方法接參數
  2. 如果只有寫 def initialize(name) 當沒有初始值時會有 given & expected 問題,想到「*name」就可以讓不論空值、超過1個值以上都放入 array
  3. 再用 any? 的方法判斷,有初始值就用初始值,沒有時就給 "regular"

龍哥建議的答案

class Ball
  def initialize(ball_type = "regular")
    @ball_type = ball_type
  end

  def ball_type
    @ball_type
  end
end

學習

  1. 複習了 initialize 可以先給預設值的寫法(整個失憶)
  2. 變數命名可以跟方法名稱一樣,除了有意義還可以用 attr_reader 的方式減少程式碼

上一篇
Codewars Ruby Challenge  -  Day 1/30
下一篇
Codewars Ruby Challenge - Day 3/30
系列文
Codewars Ruby Challenge in 30 Days30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言